The computing industry, over time, has experienced a rapid growth and evolution. Not only have technological advancements led to new models of computing devices, but they have also led to developments in the systems and networks in which the computing devices operate and interact. Each new model of computing device, from mainframes and supercomputers to personal computers and mobile devices, has brought its own share of advantages as well as challenges.
Over the past several decades, computing has been transitioning from distributed systems (e.g. mainframes) to decentralized systems (e.g. personal computers). While the new decentralized, client-oriented personal computer model provided enhanced flexibility and convenience to users, it also resulted in inefficient usage of resources and unnecessary additional costs. For example, each personal computer required the processing power and storage capacity necessary for maximum, rather than typical, loads. As a result, the recent trend in computing has been to a centralized model where applications and data can be centrally managed, stored, and provisioned for the purpose of reducing costs and improving security and efficiency.
One emerging model, known as “the cloud,” relies on the delivery of computing resources via a distributed computer network. In such a model, one or more “servers” in the cloud provide services to one or more distributed “clients.” Services provided by the cloud may range from individual software applications to the full functionality of an operating system. Cloud systems may have drawbacks, however, such as requiring specialty software to be installed on the client device to enable operation. Such specialty software may limit the availability of the cloud services due to lack of compatibility with the client device or a user lacking privileges for installing the software on the client device.
Additionally, the cloud model faces serious challenges in providing these services to end users in a consistent and secure fashion, particularly given the wide variety of devices, hardware, and operating systems that must be served. In many instances, the configuration and capabilities of the device may not be considered prior to providing service. As a result, some services may be provided that are not compatible with the particular device. For example, a service may be provided to a client that requires more physical memory than the client has available.
Therefore, a need exists in the art for a computing system that considers the capabilities and configuration of the receiving device when determining whether to provision a particular service.